// 聊天功能使用示例
import ChatHelper from '@/utils/chatHelper'

/**
 * 在组件中的使用示例
 */
export const ChatUsageExample = {
  
  // 在组件的方法中使用
  methods: {
    
    /**
     * 示例1：点击好友开始聊天
     */
    async startChatWithFriend(friend) {
      try {

        // 创建或获取聊天
        const chat = await ChatHelper.createOrGetPrivateChat({
          friendId: friend.id,
          name: friend.name,
          avatar: friend.avatar,
          remark: friend.remark
        });
        
        // 设置为当前聊天
        this.$store.commit('chatList/SET_CURRENT', chat.id);

        return chat;
        
      } catch (error) {
        console.error('开始聊天失败:', error);
        this.$message.error('开始聊天失败');
      }
    },

    /**
     * 示例2：点击群组开始聊天
     */
    async startChatWithGroup(group) {
      try {

        const chat = await ChatHelper.createOrGetGroupChat({
          groupId: group.id,
          name: group.name,
          avatar: group.avatar,
          memberCount: group.memberCount
        });
        
        this.$store.commit('chatList/SET_CURRENT', chat.id);

        return chat;
        
      } catch (error) {
        console.error('开始群聊失败:', error);
        this.$message.error('开始群聊失败');
      }
    },

    /**
     * 示例3：添加好友
     */
    async addNewFriend(friendData) {
      try {

        const friend = await ChatHelper.addFriend({
          userId: friendData.userId,
          name: friendData.name,
          phone: friendData.phone,
          email: friendData.email,
          avatar: friendData.avatar
        });

        this.$message.success('好友添加成功');
        
        return friend;
        
      } catch (error) {
        console.error('添加好友失败:', error);
        this.$message.error('添加好友失败');
      }
    },

    /**
     * 示例4：创建群组
     */
    async createNewGroup(groupData) {
      try {

        const group = await ChatHelper.createGroup({
          name: groupData.name,
          description: groupData.description,
          avatar: groupData.avatar,
          memberIds: groupData.memberIds
        });

        this.$message.success('群组创建成功');
        
        return group;
        
      } catch (error) {
        console.error('创建群组失败:', error);
        this.$message.error('创建群组失败');
      }
    },

    /**
     * 示例5：检查聊天是否存在
     */
    async checkChatBeforeCreate(chatData) {
      const existingChat = ChatHelper.checkChatExists(chatData);
      
      if (existingChat) {

        this.$message.info('聊天已存在');
        return existingChat;
      } else {

        return null;
      }
    },

    /**
     * 示例6：从好友列表直接创建聊天
     */
    async createChatFromFriendList(friend) {
      try {
        const chat = await ChatHelper.createChatFromFriend(friend);
        this.$store.commit('chatList/SET_CURRENT', chat.id);
        return chat;
      } catch (error) {
        console.error('从好友创建聊天失败:', error);
      }
    },

    /**
     * 示例7：从群组列表直接创建聊天
     */
    async createChatFromGroupList(group) {
      try {
        const chat = await ChatHelper.createChatFromGroup(group);
        this.$store.commit('chatList/SET_CURRENT', chat.id);
        return chat;
      } catch (error) {
        console.error('从群组创建聊天失败:', error);
      }
    }
  }
}

/**
 * 在 WeChat.vue 组件中的实际使用示例
 */
export const WeChatComponentExample = {
  
  methods: {
    
    /**
     * 当用户点击好友时
     */
    async currentFriend(event) {
      try {
        // 使用 ChatHelper 创建或获取聊天
        const chat = await ChatHelper.createOrGetPrivateChat({
          friendId: event.friendshipId,
          name: event.remark || event.name,
          avatar: event.avatar
        });
        
        // 设置当前聊天
        this.$store.commit('chatList/SET_CURRENT', chat.id);
        
        // 原有的逻辑
        this.item = event;
        if (this.item.type === 0) {
          this.$refs.chatGroupMember.getIsGroupLeader(this.item.friendshipId);
          this.$refs.chatGroupMember.groupChatMessageList(this.item.friendshipId);
        }
        this.$refs.chatBox.chatBox(this.item);
        
      } catch (error) {
        console.error('处理好友点击失败:', error);
        this.$message.error('开始聊天失败');
      }
    },

    /**
     * 添加好友后的处理
     */
    async precisionSearch(searchResult) {
      try {
        // 添加好友到联系人列表
        const friend = await ChatHelper.addFriend({
          userId: searchResult.userId,
          name: searchResult.name,
          phone: searchResult.phone,
          email: searchResult.email,
          avatar: searchResult.avatar
        });
        
        // 创建聊天
        const chat = await ChatHelper.createOrGetPrivateChat({
          friendId: friend.id,
          name: friend.name,
          avatar: friend.avatar
        });
        
        // 关闭搜索弹窗
        this.precisionSearchView = false;
        
        // 设置为当前聊天
        this.$store.commit('chatList/SET_CURRENT', chat.id);
        
        // 原有的逻辑
        this.$refs.asideFriend.clickAddSession(searchResult);
        
      } catch (error) {
        console.error('添加好友并创建聊天失败:', error);
        this.$message.error('添加好友失败');
      }
    }
  }
}
